﻿namespace MyCSharpWork4
{
    internal class Program
    {
        /// <summary>
        /// 汉罗塔小游戏
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //设定汉罗塔层数
            Console.Write("汉罗塔层数为：");
            int input = Convert.ToInt32(Console.ReadLine());
            //输出移动过程，目的是从A移动到C，思路是以1层和2层是为基础
            Console.WriteLine("移动过程为：");
            Hanoi(input, 'A', 'B', 'C');
            Console.ReadKey();
        }
        public static void Hanoi(int n, char A, char B, char C)
        {
            //最后一步，结束递归的一步，也是一层时的情况
            if (n==1)
                Console.WriteLine($"移动{n}号从{A}到{C}");
            else
            {
                //将前n-1个从A移到B
                //两层时的情况，将前n-1个看作整体，此时A相当于两层时的A,B相当于两层时的C
                Hanoi(n-1, A, C, B);
                Console.WriteLine($"移动{n}号从{A}到{C}");
                //将n-1层从B移到C
                //此时B相当于两层时的A,C相当于两层时的C
                Hanoi(n-1, B, A, C);
            }

        }








    }
}